/**
 * Created by kouen on 2017/9/5.
 */

/**
 * 配置参数设置，常量
 * @type {{PageSize: number, PageNumber: number, SortName: string, SortOrder: string, Cols: [*]}}
 */
const Default = {
    PageSize: 10,
    PageNumber: 1,
    SortName: "date",
    SortOrder: "desc",
    Cols: [
        {
            title: "时间",
            field: "date",
            align: "center",
            valign: "middle",
            sortable: true,
        },
        {
            title: "操作",
            field: "operator",
            align: "center",
            valign: "middle",
            sortable: true,
        },
        {
            title: "代码",
            field: "code",
            align: "center",
            valign: "middle",
            sortable: true,
        },
        {
            title: "数量",
            field: "number",
            align: "center",
            valign: "middle",
            sortable: true,
        },
        {
            title: "价格",
            field: "price",
            align: "center",
            valign: "middle",
            sortable: true,
        },
    ]
};

/**
 初始化Table的列,并且初始化数据
 * @param tableID 表的ID
 * @param columns 列的描述数据列表
 * @param fatherID 父控件的名称
 */
function initTable(fatherID, columns, tableID='DataTable') {
    let father = $(`#${fatherID}`);
    father[0].innerHTML = `<table id="${tableID}"></table>`;
    let account_id = $("#buy_btn")[0].value;
    $(`#${tableID}`).bootstrapTable({
        method: 'GET',
        toolbar: `#toolbar`, //工具按钮用哪个容器
        cache: false, //是否使用缓存，默认为true，所以一般情况下需要设置一下这个属性（*）
        showRefresh: true,
        pagination: true, //是否显示分页（*）
        sortable: true, //是否启用排序
        sortOrder: Default.SortOrder, //排序方式
        sortName: Default.SortName,
        pageNumber: Default.PageNumber, //初始化加载第一页，默认第一页
        pageSize: Default.PageSize, //每页的记录行数（*）
        url: `/account/query/records/${account_id}/`, //这个接口需要处理bootstrap table传递的固定参数
        queryParamsType: '', //默认值为 'limit' ,在默认情况下 传给服务端的参数为：offset,limit,sort 设置为 '' 在这种情况下传给服务器的参数为：pageSize,pageNumber
        sidePagination: "",
        pageList:[10],
        minimumCountColumns: 2,
        clickToSelect: true,
        search: true,
        searchOnEnterKey: true,
        columns: columns,
        paginationVAlign: 'bottom',
        height: 540
    });
}

/**
 * 初始化运行的地方
 */
{
    initTable("records", Default.Cols);
}

$(".btn").click(e=>{
    let code = $("#code_input")[0];
    let number = $("#number_input")[0];
    let sell_num = $("#sell_input")[0];
    let id = $("#buy_btn")[0].value;
    let sell_code = $("#sell_all")[0];

    switch(e.currentTarget.id){
        case "buy_btn":
            $.post("/account/commit/order/", {
                code:code.value,
                num:number.value,
                op:'买入',
                id: id
            }, res=>{
                if (res.code === 0){
                    alert("✅操作成功");
                    location.reload();
                }else{
                    alert("❌操作失败，信息有误.")
                }
            });
            break;
        case "clean_btn":
            code.value="";
            number.value="";
            break;
        case "sell_by_number":
            $.post("/account/commit/order/", {
                code:sell_code.value,
                num:sell_num,
                op:'卖出',
                id: id
            }, res=>{
                if (res.code === 0){
                    alert("✅操作成功");
                    location.reload();
                }else{
                    alert("❌操作失败，信息有误.")
                }
            });
            break;
        case "sell_all":
            $.post("/account/commit/order/", {
                code:sell_code.value,
                num:-1,
                op:'卖出',
                id: id
            }, res=>{
                if (res.code === 0){
                    alert("✅操作成功");
                    location.reload();
                }else{
                    alert("❌操作失败，信息有误.")
                }
            });
            break;
    }
});

$(".btn-sell").mousedown(e=>{
    $("#sell_all")[0].value = e.currentTarget.value;
    return true;
});

$(".form-control").change(e=>{
    let value = e.currentTarget.value;
    if (value !== undefined){
        switch(e.currentTarget.id){
            case "code_input":
                $.get(`/account/query/has/${value}/`, res=>{
                    let btn = $("#buy_btn");
                    let codelabel = $("#stock_code_label");
                    let pricelabel = $("#stock_price_label");

                    if (res.result){
                        btn.removeAttr("disabled");
                        codelabel.css('display', 'inline');
                        pricelabel.css('display', 'inline');

                        codelabel[0].value = res.name;
                        pricelabel[0].value = res.price;
                    }else{
                        btn.attr("disabled", 'disabled');
                        codelabel.css('display', 'none');
                        pricelabel.css('display', 'none');
                    }
                });
                break;
        }
    }
});